package com.starkuz.mailsender;


import com.starkuz.model.Order;
import org.hibernate.validator.constraints.Email;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class OrderNotification {


    private final static String NAME = "\n Имя клиента: ";
    private final static String CITY = "\n Город клиента: ";
    private final static String COMMENT = "\n Запрос клиента: ";
    private final static String EMAIL = "\n Email клиента: ";
    private final static String PHONE = "\n Телефон клиента: ";
    private final static String SPACE = "\n\n ";


    private final static String TEMPLATE_MESSAGE_BEGIN = "Здравствуйте!  \n" +
            "\n Благодарим Вас за доверие." +
            "\n Ресурс StarKuz LeadGen к Вашим услугам!" +
            "\n" +
            "\n Вам поступила заявка!" +
            "\n" +
            "\n Для ее просмотра Вы можете войти в личный кабинет или воспользоваться информацией, представленной ниже." +
            "\n" +
            "\n Страница с которой сделана заявка: http://www.alobov.ru/lg/order-host.html?id=";
    private final static String TEMPLATE_MESSAGE_END =
            "\n"+
            "\n P.S. Заявка не обработанная в течение 5 минут после ее поступления снижает вероятность" +
            "\n заключения сделки!" +
            "\n"+
            "\n С уважением, Владимир Юсупов" +
            "\n специалист службы поддержки StarKuz" +
            "\n http://alobov.ru" +
            "\n";

    public static void sendOrderNotificationMail(String mailTo, Integer pageId, Order order){
        if (mailTo.isEmpty()) {
            return;
        }
        //Переменные для вставки инфы по зауказу в тело письма
        String email = order.getEmail(); // почта пользователя
        String city = order.getCity();   //город пользователя
        String comment = order.getComment(); //просьба сделать что-либо
        String name = order.getName(); // имя пользователя
        String phone = order.getPhone(); // телефон пользователя


        Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");

        Session session = Session.getDefaultInstance(props,
                new Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("vovix@alobov.ru","Yulya1811");
                    }
                });

        try {

            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("vovix@alobov.ru"));
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse(mailTo));
            message.setSubject("Получение заявки на StarKuz LeadGen");
            String mess = TEMPLATE_MESSAGE_BEGIN + pageId + SPACE + NAME + name + CITY + city + EMAIL + email +
                    PHONE + phone + COMMENT + comment + TEMPLATE_MESSAGE_END;
            message.setText(mess);
            Transport.send(message);
        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }


}
